const Controller = require('egg').Controller;
const jwt = require('jsonwebtoken');
class UserController extends Controller {
  async register() {
    const { ctx, app } = this;
    const { username, password } = ctx.request.body;
    // 验证用户名和密码


    if (!username || !password) {
      ctx.body = { success: false, message: '用户名或密码不能为空' };
      return;
    }

    // 使用 app.mysql 客户端查询用户是否存在
    const userExists = await app.mysql.query('SELECT * FROM user WHERE username = ?', [ username ], ctx.request.body);
    if (userExists.length > 0) {
      // code  犸相当于前端封装axios
      ctx.body = { code: 1, success: false, message: '该账号已存在，请重新注册' };
      return;
    }

    // 注册新用户
    const result = await app.mysql.insert('user', { username, password });
    if (result.affectedRows > 0) {
      ctx.body = { code: 0, success: true, message: '注册成功' };
    } else {
      ctx.body = { code: 1, success: false, message: '注册失败' };
    }
  }

  async login() {
    const { ctx, app } = this;
    const { username, password, img, userId } = ctx.request.body;
    // 从mysql找为img字段的图片 返回前段  渲染

    // if (ResultImg) {
    //   ctx.body = {
    //     code: 0,
    //     message: '图片信息完成。。。',
    //     ResultImg,
    //   };
    // }

    // console.log(ctx.body = ResultImg, '讽德诵功电饭锅');
    if (!username || !password) {
      ctx.body = { success: false, message: '用户名或密码不能为空' };
      return;
    }
    // 查询用户信息
    const user = await app.mysql.query('SELECT * FROM user WHERE username = ?', [ username ], ctx.request.body);
    console.log(user, '12134');

    if (user.length === 0) {
      ctx.body = { code: 1, success: false, message: '用户名不存在' };
      return;
    }
    const IMG = await this.app.mysql.query('SELECT * FROM user WHERE username = ? AND  img IS NOT NULL', [ username, img ]);
    console.log(IMG, '官方美眉的');
    const use = await this.app.mysql.query('SELECT * FROM user WHERE userId = ? ', [ userId ]);
    const Yahao = await this.app.mysql.query('SELECT * FROM user WHERE username = ? ', [ username ]);
    // 验证密码
    console.log(Yahao,"444444");
    if (user[0].password === password) {
      const users = ctx.request.body;
      // const userId = ctx.request.body;
      const token = jwt.sign(ctx.request.body, 'chen', { expiresIn: '1h' });
      // 自动刷新Token：在每次请求时，服务器端可以检查Token的过期时间。如果即将过期，服务器可以自动刷新Token并返回给客户端，以保证客户端的持续访问。
      // 前端处理：在前端，可以将Token存储在cookie或localStorage中。当Token过期时，前端可以通过检查响应状态码（如401）来判断Token是否过期，并采取相应的处理措施，如跳转到登录页面或请求新的Token。
      // 使用刷新令牌（Refresh Token）    强制重新登录：
      ctx.body = {
        code: 0, success: true, message: '登录成功', token, users: ctx.request.body, IMG, use, Yahao,
        // userId: ctx.request.body,
      };
    } else {
      ctx.body = { code: 1, success: false, message: '密码错误' };
    }
  }


}

module.exports = UserController;
